perm filename AEROM.FAI[CMS,LCS] blob sn#192523 filedate 1975-12-17 generic text, type C, neo UTF8
COMMENT ⊗   VALID 00006 PAGES
C REC  PAGE   DESCRIPTION
C00001 00001
C00002 00002		.INSERT	ASMBL.FAI
C00004 00003	 ROM RESET
C00006 00004		GVAL:	STX	ADRL	SETUP ADR		3
C00008 00005	 GET NUM
C00010 00006	 LED OUT
C00021 ENDMK
C⊗;
	.INSERT	ASMBL.FAI
; ODT RAM & INTERUPT VECTORS
	LOC 1000

	SVPCH:	377	;0
	SVPCL:	377	;1
	SVPS:	377	;2
	SVSP:	377	;3
	SVA:	176	;4
	SVX:	176	;5
	SVY:	377	;6

	SVPRA:	377	;7
	SVCRA:	377	;10
	SVPRB:	377	;11
	SVCRB:	377	;12

	DADRL:	377	;13
	DADRH:	377	;14
	VAL:	377	;15
	NFLG:	377	;16
	DOIT:	0	;17
	ADRL:	377	;20
	ADRH:	377	;21
	RTRN:	0	;22

	SVNMI:	377		;1021
	IRQA:	REPEAT 3,{111↔}	;1022 - 1024
	NMIA:	REPEAT 3,{333↔}	;1025 - 1027
		377		; ← FF MARK
; CK EXUTIV AND OTHER PROM (BRK)?
; ROM RESET
; OCT DDT	CK FOR BBIT?
; SETUP IRQV WITH ? OR BRK FOR OTHER ROM
	LOC 177300		;SHOULD BE 177400

	SVNUM←17

	ODT:	STX	SVX	;SAVE X REG		3
		LDX	NMIA	;			3
		STX	SVNMI	;SAVE NMIA		3
		LDXI	RTI	;			2
		STX	NMIA	;FIX IT		      __3_
				;		       14

		LDXI	2	;			2
	SAVS:	PLA		;GET PC AND PS FROM	1
		STAX	SVPCH	;STACK AND SAVE		3
		DEX		;			1
		BPL	SAVS	;DO MORE		2
		
		TSX		;SAVE SP		1
		STX	SVSP	;			3
		STY	SVY	;SAVE Y		      __3_
				;		       15
; RESET I/O		SAVE PR ?
	CRA←173775  ↔	PRA←173774
	CRB←173777  ↔	PRB←173776

		LDXI	3	;			2
	SVPIA:	LDAX	PRA	;SAVE CR THEN DD	3
		STAX	SVPRA	;			3
		LDAI	0	;			2
		STAX	PRA	;REPLACE WITH ZEROS	3
		DEX		;			1
		BPL	SVPIA	;			2

		STX	PRB	;FOR OUTPUT		3
; DPY .LOC
		LDAI	RTS	;			2
		STA	RTRN	;			3
		LDX	SVPCL	;GET PCL		3
		LDY	SVPCH	;GET PCH	      __3_
				;		       25
				;		      ____
				;		       54
	GVAL:	STX	ADRL	;SETUP ADR		3
		STY	ADRH	;			3
		STX	DADRL	;AND DADR		3
		STY	DADRH	;			3

		LDAI	255	;LDA			2
		STA	DOIT	;			3
		JSR	DOIT	;			3
		STA	VAL	;			3

		LDXI	0	;			2
		STX	NFLG	;RESET NUM FLAG	      __2_
				;		       16
; KB SCAN
	KSCAN:	JSR	LDPY	;DPY DADR AND VAL	3
		JSR	IKBW	;GET KBCHR		3
		ANDI	17	;GET RID OF JUNK	2
		CMPI	10	;			2
		BEQ	DOT	;EXAM			2
		LDX	NFLG	;			3
		BCC	GNUM	;BRANCH ON NUM		2
		BEQ	XNXT	;IF NO DEP THEN EX NXT__2_
				;		       18
; DEP
		LDAI	215	;STA			3
		STA	DOIT	;			3
		LDA	DADRL	;			3
		JSR	DOIT	;			3
; EXAM NEXT
	XNXT:	LDX	ADRL	;			3
		LDY	ADRH	;			3
		INX		;ADR ← ADR+1		1
		BNE	GVAL	;			2
		INY		;			1
		JMP	GVAL	;		      __3_
				;		       17
; EXAM
	DOT:	BIT	NFLG	;CK FOR CONTINUE	3
		BEQ	CONT	;			2
		LDX	DADRL	;GET DADR FOR ADR	3
		LDY	DADRH	;			3
		JMP	GVAL	;		      __3_
				;		       14
				;		      ____
				;		       62
; GET NUM
	GNUM:	BNE	NOZRO	;IF FIRST NUM		2
		STX	DADRL	;THEN ZERO ADR DPY	3
		STX	DADRH	;			3
	NOZRO:	LDXI	3	;			2
		STX	NFLG	;SET NUM FLG		3
	DIG:	ASL	DADRL	;SHIFT ADDRESS LEFT	3
		ROL	DADRH	;			3
		DEX		;			1
		BNE	DIG	;SHIFT MORE		2
		ORA	DADRL	;AND ADD KBCHR		3
		STA	DADRL	;			3
		JMP	KSCAN	;		      __3_
				;		       24
; CONTINUE
	CONT:	LDXI	3	;			2
	GETR:	LDAX	SVPRA	;RESTORE CR AND PR	3
		STAX	PRA	;			3
		DEX		;   FIX THIS		1
		BPL	GETR	;		      __2_
				;		       11
		
		LDX	SVSP	;GET SP			3
		TXS		;			1
		LDY	SVY	;GET Y			3

		LDXI	-3	;			2
	GETS:	LDAX	SVPCH+3	;RESTORE PC AND PS 	3
		PHA		;TO STACK		1
		INX		;			1
		BMI	GETS	;		      __2_
				;		       15

		LDA	SVA	;GET A			3
		LDX	SVNMI	;			3
		STX	NMIA	;RESTORE NMIV		3
		LDX	SVX	;GET X			3
		RTI		;		      __1_
				;		       23
				;		      ____
				;		       70
; LED OUT
	LDPY:	LDAI	54	;SET DDBIT		2
		STA	CRB	;AND PULSE IN CRB	3
		LDXI	5	;			2
		LDYI	5	;			2

	ROT:	ROL	VAL	;ROTATE VAL AND		3
		ROL	DADRL	;DADR LEFT 4	 	3
		ROL	DADRH	;BITS AT A TIME		3
		DEY		;			1
		BNE	ROT	;		       _2_
				;			8

		LDA	VAL	;			3
		ANDI	17	;			2
		ORAX	DTBL	;			3
		STA	PRB	;DPY IT			3
		LDYI	4	;			2
		DEX		;			1
		BPL	ROT	;DO REST		2
		RTS		;		      __1_
				;		       16

	DTBL:	0		;			1
		20		;			1
		40		;			1
		60		;			1
		100		;			1
		120		;		      __1_
				;			6

; INKBW
	IKBW:	LDAI	6	;SET DDBIT		2
		STA	CRA	;AND ↑BIT IN CRA	3
	CKMOR:	BIT	CRA	;TEST CRA FOR INPUT	3
		BPL	CKMOR	;TRY AGAIN		2
		LDA	PRA	;GET CHR		3
		RTS		;RETURN		      __1_
				;		       14
; ROM INTER VECTS
	LOC 177772
	NMIV:	ABSO NMIA	;			2
	RSTV:	ABSO ODT	;			2
	IRQV:	ABSO IRQA	;		       _2_
				;			6
				;		      ____
				;		       61

				;		       69
				;		       62
				;		       70
				;		     __51_
END				;		      252